From: Keir Fraser Date: Mon, 1 Oct 2007 12:18:19 +0000 (+0100) Subject: libxenctrl: Fix lock_pages()/unlock_pages() region-size calculation. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14929^2~22 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=10dcd077d24fd3a63791549637e26f9284dfa94b;p=xen.git libxenctrl: Fix lock_pages()/unlock_pages() region-size calculation. Signed-off-by: Isaku Yamahata --- diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c index 18a18f4c65..03d7904d61 100644 --- a/tools/libxc/xc_private.c +++ b/tools/libxc/xc_private.c @@ -130,7 +130,8 @@ int lock_pages(void *addr, size_t len) int e = 0; #ifndef __sun__ void *laddr = (void *)((unsigned long)addr & PAGE_MASK); - size_t llen = (len + PAGE_SIZE - 1) & PAGE_MASK; + size_t llen = (len + ((unsigned long)addr - (unsigned long)laddr) + + PAGE_SIZE - 1) & PAGE_MASK; e = mlock(laddr, llen); #endif return e; @@ -140,7 +141,8 @@ void unlock_pages(void *addr, size_t len) { #ifndef __sun__ void *laddr = (void *)((unsigned long)addr & PAGE_MASK); - size_t llen = (len + PAGE_SIZE - 1) & PAGE_MASK; + size_t llen = (len + ((unsigned long)addr - (unsigned long)laddr) + + PAGE_SIZE - 1) & PAGE_MASK; safe_munlock(laddr, llen); #endif }